package com.example.func.vo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 用户视图对象VO
 * 用于前端页面展示的用户信息
 * 通常包含一些计算字段或格式化后的数据
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class UserVO {
    
    private Long id;
    private String name;
    private Integer age;
    private String email;
    private String phone;
    private String ageGroup;  // 年龄分组：青年、中年、老年
    private String displayName; // 显示名称：姓名 + 年龄
    private Boolean isAdult;   // 是否成年
    
    public UserVO(Long id, String name, Integer age, String email, String phone) {
        this.id = id;
        this.name = name;
        this.age = age;
        this.email = email;
        this.phone = phone;
        this.initComputedFields();
    }
    
    /**
     * 初始化计算字段
     */
    private void initComputedFields() {
        // 年龄分组
        if (age != null) {
            if (age < 18) {
                this.ageGroup = "未成年";
            } else if (age < 35) {
                this.ageGroup = "青年";
            } else if (age < 50) {
                this.ageGroup = "中年";
            } else {
                this.ageGroup = "老年";
            }
        }
        
        // 显示名称
        this.displayName = name + "(" + age + "岁)";
        
        // 是否成年
        this.isAdult = age != null && age >= 18;
    }
    
    /**
     * 设置年龄时自动更新计算字段
     */
    public void setAge(Integer age) {
        this.age = age;
        this.initComputedFields();
    }
}